﻿/*
 * Ejemplo de Statemanager XNA 4.0
 * 
 * 100% XNA & XNACommunity- 2010
 * http://100xna.wordpress.com/
 * http://xnacommunity.codeplex.com
 * 
 */
using System.Collections.Generic;
using Microsoft.Xna.Framework;

namespace StateExample
{
    /// <summary>
    /// Gestor de estados. Se encarga de que todo funcione bien
    /// </summary>
    public class StateManager : DrawableGameComponent
    {
        public Dictionary<GameStates, State> Estados;   //Todos los estados disponibles
        public GameStates EstadoActual;                 //Estado actual


        public StateManager(Game game)
            : base(game)
        {
            Estados = new Dictionary<GameStates, State>();
            EstadoActual = GameStates.PlayingState;
        }

        /// <summary>
        /// Actualiza el estado activo
        /// </summary>
        /// <param name="gameTime"></param>
        public override void Update(GameTime gameTime)
        {
            State estado;
            if(Estados.TryGetValue(EstadoActual, out estado))
                estado.Update(gameTime);
        }

        /// <summary>
        /// Pinta el estado activo
        /// </summary>
        /// <param name="gameTime"></param>
        public override void Draw(GameTime gameTime)
        {
            State estado;
            if(Estados.TryGetValue(EstadoActual, out estado))
                estado.Draw(gameTime);
        }
    }
}
